package frsf.cidisi.exercise.modelo.situationCalculus.actions;

import frsf.cidisi.exercise.modelo.situationCalculus.AgenteEstado;
import frsf.cidisi.exercise.modelo.util.Orientacion;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusAction;
import frsf.cidisi.faia.state.AgentState;
import frsf.cidisi.faia.state.EnvironmentState;

public class GirarIzq extends SituationCalculusAction {

    @Override
    public EnvironmentState execute(AgentState ast, EnvironmentState est) {
        
        // TODO: Complete Method
    	AgenteEstado agState = (AgenteEstado) ast;
        
        Orientacion actual = agState.getOrientacion();
        agState.setOrientacion(this.girarIzquierda(actual));
        
        return est;
    }
    
     /* Norte = 1
	 * Sur = 2
	 * Este = 3
	 * Oeste = 4
	 */
    private Orientacion girarIzquierda(Orientacion actual){
    	switch(actual.getValue()){
    	case 1:
    		return new Orientacion(4);
    	case 2:
    		return new Orientacion(3);
    	case 3:
    		return new Orientacion(1);
    	case 4:
    		return new Orientacion(2);
    	}
    	return actual;
    }

    @Override
    public String toString() {
        return "GirarIzq";
    }
}

